package chapter07

/**
 *
 * @author cdhuangchao3
 * @date 2023/6/11 11:12 AM
 */
object Test15_HighLevelFunc_Reduce {
  def main(args: Array[String]): Unit = {
    val list = List(1, 2, 3, 4, 9)

    println(list.reduce((a, b) => a * b))
    println(list.reduce(_ * _))
    println(list.reduce((a, b) => a + b + a * b))
    println("=" * 20)
    // 从做往右加
    println(list.reduceLeft(_ - _))
    // 从右往左加
    println(list.reduceRight(_ - _))

    // 2.fold
    println(list.fold(10)(_+_)) // 10 + 1 + 2 + 3 + 4 + 9
    println(list.foldLeft(10)(_-_)) // 10 -1 -2 -3 -4 -9
    println(list.foldRight(10)(_-_)) // 1 - (2 - (3 - (4 - (9 - 10))))
  }
}
